8573d80830babf10b811326fc184e69c3effeb5a,tests/frontend/org/voltdb/planner/TestMultipleOuterJoinPlans.java,TestMultipleOuterJoinPlans,testFullJoinExpressions,#,301
Before Change
pn = compile("select * FROM " +
"R1 FULL JOIN R2 ON R1.A = R2.A AND R1.C = R2.C");
n = pn.getChild(0).getChild(0);
verifyJoinNode(n, PlanNodeType.NESTLOOP, JoinType.FULL, true, PlanNodeType.SEQSCAN, PlanNodeType.SEQSCAN);
nlj = (NestLoopPlanNode) n;
e = nlj.getJoinPredicate();
assertNotNull(e);
After Change
// OUTER JOIN expression (R1.A > 0) is pre-predicate, inner and inner - outer expressionsR3.C = R2.C AND R3.C < 0 are predicate
pn = compile("select * FROM R1 JOIN R2 ON R1.A = R2.C FULL JOIN R3 ON R3.C = R2.C AND R1.A > 0 AND R3.C < 0");
n = pn.getChild(0).getChild(0);
verifyJoinNode(n, PlanNodeType.NESTLOOP, JoinType.FULL, ExpressionType.COMPARE_GREATERTHAN, ExpressionType.CONJUNCTION_AND, null, PlanNodeType.NESTLOOP, PlanNodeType.SEQSCAN, null, "R3");
n = n.getChild(0);
verifyJoinNode(n, PlanNodeType.NESTLOOP, JoinType.INNER, null, ExpressionType.COMPARE_EQUAL, null, PlanNodeType.SEQSCAN, PlanNodeType.SEQSCAN, "R1", "R2");